/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.logica;

import co.com.going.modelo.Usuarioo;
import co.com.going.persistencia.IDAOusuarioo;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import org.apache.commons.codec.digest.DigestUtils;

/**
 *
 * @author Olguita
 */
@Stateless
public class LogicaUsuarioo implements ILogicaUsuarioo {

    @EJB
    private IDAOusuarioo iDAOusurioo;
    
    @Override
    public void crearUsuario(Usuarioo usuarioo) throws Exception {
        
        if(usuarioo==null){
        
            throw new Exception("El Usuario no tiene Informacion");
        
        }
        
        Usuarioo objUsuario= iDAOusurioo.buscarUsuarioPorId(usuarioo.getIdUsuario());
        
        if(objUsuario!=null){
        
        
            throw new Exception("El Usuario ya Existe");
        
        }
        
         
        
        if(usuarioo.getNombre()==null||usuarioo.getNombre().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
         if(usuarioo.getApellidos()==null||usuarioo.getApellidos().equals("")){
            
            throw new Exception("El Apellido no puede ser Vacio");
            
        }
         
         if(usuarioo.getContrasena()==null||usuarioo.getContrasena().equals("")){
            
            throw new Exception("La Contraseña No Puede Ser Vacia");
            
        }
         
         if(usuarioo.getIdUsuario()==null||usuarioo.getIdUsuario()==0){
            
            throw new Exception("El Id del Usuario Nos Puede Ser Vacio");
            
        }
         
         if(usuarioo.getNivelA()==null||usuarioo.getNivelA().equals("")){
            
            throw new Exception("El Nivel de Aceeso No Puede Ser Vacio");
            
        }
         
         if(usuarioo.getEstado()==null||usuarioo.getEstado().equals("")){
            
            throw new Exception("EL Estado del Usuario no puede ser Vacio");
            
        }
        
         iDAOusurioo.crearUsuario(usuarioo);
        
    }

    @Override
    public void eliminarUsuario(Usuarioo usuarioo) throws Exception {
        
        if(usuarioo==null){
        
            throw new Exception("El Usuario no tiene Informacion");
        
        }
        
        Usuarioo objUsuario= iDAOusurioo.buscarUsuarioPorId(usuarioo.getIdUsuario());
        
        if(objUsuario==null){
        
            throw new Exception("El Usuario No Existe");
        
        }
        
        iDAOusurioo.eliminarUsuario(objUsuario);
        
    }

    @Override
    public void modificarUsuario(Usuarioo usuarioo) throws Exception {
       
        if(usuarioo==null){
        
            throw new Exception("El Usuario no tiene Informacion");
        
        }
        
        Usuarioo objUsuario= iDAOusurioo.buscarUsuarioPorId(usuarioo.getIdUsuario());
        
        if(objUsuario==null){
        
            throw new Exception("El Usuario No Existe");
        
        }
        
        if(usuarioo.getNombre()==null||usuarioo.getNombre().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
        if(usuarioo.getApellidos()==null||usuarioo.getApellidos().equals("")){
            
            throw new Exception("El Apellido no puede ser Vacio");
            
        }
         
        if(usuarioo.getContrasena()==null||usuarioo.getContrasena().equals("")){
            
            throw new Exception("La Contraseña No Puede Ser Vacia");
            
        }
         
        if(usuarioo.getIdUsuario()==null||usuarioo.getIdUsuario()==0){
            
            throw new Exception("El Id del Usuario Nos Puede Ser Vacio");
            
        }
         
        if(usuarioo.getNivelA()==null||usuarioo.getNivelA().equals("")){
            
            throw new Exception("El Nivel de Aceeso No Puede Ser Vacio");
            
        }
         
        if(usuarioo.getEstado()==null||usuarioo.getEstado().equals("")){
            
            throw new Exception("EL Estado del Usuario no puede ser Vacio");
            
        }
        
        iDAOusurioo.modificarUsuario(usuarioo);
        
    }

    @Override
    public Usuarioo buscarUsuarioPorId(Long IDUsuario) throws Exception {
       
        if(IDUsuario==null||IDUsuario==0) {
           
           throw new Exception("Ingrese el ID del Usuario para realizar la busqueda");
           
       }
       
       return iDAOusurioo.buscarUsuarioPorId(IDUsuario);
       
    }

    @Override
    public List<Usuarioo> usuarios() throws Exception {
        
        return iDAOusurioo.usuarios();
        
    }

    @Override
    public String ValidarContrasena(String contrasena, String confirmacion) throws Exception {
        
         if(!(confirmacion.equals(contrasena))){
            
            throw new Exception("Las Contraseñas no Coinciden");     
        
        }
        
        return contrasena;
        
    }
    
    
    @Override
    public String encriptarContraseña(String password) throws Exception{
        String encriptMD5 = DigestUtils.md5Hex(password);
        System.out.println("md5:" + encriptMD5);
        
        return encriptMD5;
    }
    
    
    @Override
    public Usuarioo ingresar(Long cedula, String clave) throws Exception {
      
        if(cedula==null || clave==null || clave.equals("")){
            throw new Exception("El usuario y clave son Obligatorios");
        }
        Usuarioo usuarioo = iDAOusurioo.buscarUsuarioPorId(cedula);
        if(usuarioo==null){
            throw new Exception("Usuario no registrado");
        }
        if(usuarioo.getEstado().equals("0")){
            throw new Exception("El Usuario se Encuentra Inactivo");
        }
        if(!(usuarioo.getContrasena().equals(clave))){
            throw new Exception("Datos incorrectos");
        }
        return usuarioo;
        
        
    }
    
}
